package com.hermes.biz.search.logic;

public class SearchLogic {
    //	private static Connection conn = null;     
    //    private static Statement stmt = null;     
    //    private static ResultSet rs = null;    
    //    private String searchDir = "C:\\Test\\Index";     
    //    private static File indexFile = null;     
    //    public static Searcher searcher = null;     
    //    private static Analyzer analyzer = null;     
    //    private int maxBufferedDocs = 500;     
    //    /**   
    //    * @return ResultSet   
    //    * @throws Exception   
    //    */    
    //    public void createIndex(String sqlStr,String indexdir) throws Exception {     
    //            
    //       
    //    	if(indexdir!=null&&indexdir!=""){
    //    		searchDir = indexdir;
    //    	}
    //        SQLConnection connection = new SQLConnection();
    //        conn = connection.getConnction();
    //        if(conn == null) {
    //        }
    //        String sql = sqlStr;     
    //        try {     
    //            stmt = conn.createStatement();     
    //            rs = stmt.executeQuery(sql);     
    //            this.createIndex(rs);   
    //           
    //        } catch(Exception e) {
    //            e.printStackTrace();
    //            throw new Exception("sql : " + sql);     
    //        } finally {
    //            if(rs != null) rs.close();     
    //            if(stmt != null) stmt.close();
    //            if(conn != null) conn.close();
    //        } 
    //    }     
    //  
    //    /**
    //     * item index create
    //     * @param sqlStr
    //     * @param indexdir
    //     * @throws Exception
    //     */
    //    public void createItemIndex(String sqlStr,String indexdir) throws Exception {     
    //        
    //        
    //    	if(indexdir!=null&&indexdir!=""){
    //    		searchDir = indexdir;
    //    	}
    //        SQLConnection connection = new SQLConnection();
    //        conn = connection.getConnction();
    //        if(conn == null) {
    //        }
    //        String sql = sqlStr;     
    //        try {     
    //            stmt = conn.createStatement();     
    //            rs = stmt.executeQuery(sql);  
    //            this.createItemIndex(rs);
    //            //this.createIndex(rs);   
    //           
    //        } catch(Exception e) {
    //            e.printStackTrace();
    //        } finally {
    //            if(rs != null) rs.close();     
    //            if(stmt != null) stmt.close();
    //            if(conn != null) conn.close();
    //        } 
    //    }    
    //    
    //    public List<UserSearchBean> getSearchResult(String queryStr) throws Exception{
    //    	List<UserSearchBean> result = null;
    //    	TopDocs topDocs = this.search(queryStr);     
    //        ScoreDoc[] scoreDocs = topDocs.scoreDocs;     
    //        result = this.addHits2List(scoreDocs);     
    //        return result;
    //    }
    //  
    //    public List<ItemDO> getItemSearchResult(String queryStr,int topN) throws Exception{
    //    	List<ItemDO> result = null;
    //    	//TopDocs topDocs = this.search(queryStr);     
    //        //test topN search
    //    	TopDocs topDocs = this.searchTopN(queryStr, topN);
    //    	ScoreDoc[] scoreDocs = topDocs.scoreDocs;     
    //        result = this.addItemHits2List(scoreDocs);     
    //        return result;
    //    }
    //    
    //    
    ///**   
    //* @param rs   
    //* @throws Exception   
    //*/    
    //    private void createIndex(ResultSet rs) throws Exception {     
    //        Directory directory = null;     
    //        IndexWriter indexWriter = null;     
    //         
    //        try {     
    //            indexFile = new File(searchDir);     
    //            if(!indexFile.exists()) {     
    //                indexFile.mkdir();     
    //            }     
    //            directory = FSDirectory.open(indexFile);     
    //            analyzer = new IKAnalyzer();     
    //              
    //            indexWriter = new IndexWriter(directory, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);     
    //            indexWriter.setMaxBufferedDocs(maxBufferedDocs);     
    //            Document doc = null;     
    //            while(rs.next()) {     
    //                doc = new Document();     
    //                Field id = new Field("user_id", String.valueOf(rs.getInt("user_id")), Field.Store.YES, Field.Index.NOT_ANALYZED, TermVector.NO);     
    //                Field school = new Field("school", rs.getString("school") == null ? "" : rs.getString("school"), Field.Store.YES,Field.Index.ANALYZED, TermVector.NO);     
    //                doc.add(id);     
    //                doc.add(school);     
    //                indexWriter.addDocument(doc);     
    //            }     
    //                         
    //            indexWriter.optimize();     
    //            indexWriter.close();     
    //        } catch(Exception e) {     
    //            e.printStackTrace();     
    //        }      
    //    }     
    //    
    //    /**   
    //    * @param rs   
    //    * @throws Exception   
    //    */    
    //        private void createItemIndex(ResultSet rs) throws Exception {     
    //            Directory directory = null;     
    //            IndexWriter indexWriter = null;     
    //             
    //            try {     
    //                indexFile = new File(searchDir);     
    //                if(!indexFile.exists()) {     
    //                    indexFile.mkdir();     
    //                }     
    //                directory = FSDirectory.open(indexFile);     
    //                analyzer = new IKAnalyzer();     
    //                  
    //                indexWriter = new IndexWriter(directory, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);     
    //                indexWriter.setMaxBufferedDocs(maxBufferedDocs);     
    //                Document doc = null;     
    //                while(rs.next()) {     
    //                    doc = new Document();     
    //                    Field item_id = new Field("item_id", String.valueOf(rs.getInt("item_id")), Field.Store.YES, Field.Index.NOT_ANALYZED, TermVector.NO);
    //                    Field item_title = new Field("item_title", rs.getString("item_title"), Field.Store.YES, Field.Index.ANALYZED, TermVector.NO);
    //                    Field tag_id = new Field("tag_id", String.valueOf(rs.getInt("tag_id")), Field.Store.YES, Field.Index.NOT_ANALYZED, TermVector.NO);
    //                    Field picture_url = new Field("picture_url",rs.getString("picture_url"), Field.Store.YES, Field.Index.NOT_ANALYZED, TermVector.NO);
    //                    Field description = new Field("description",rs.getString("description"), Field.Store.YES, Field.Index.ANALYZED, TermVector.NO);
    //                    
    //                    doc.add(item_id);     
    //                    doc.add(item_title);
    //                    doc.add(tag_id);
    //                    doc.add(picture_url);
    //                    doc.add(description);
    //                    indexWriter.addDocument(doc);     
    //                }     
    //                             
    //                indexWriter.optimize();     
    //                indexWriter.close();     
    //            } catch(Exception e) {     
    //                e.printStackTrace();     
    //            }      
    //        }     
    //   
    //    /**   
    //    * @param queryStr   
    //    * @return   
    //    * @throws Exception   
    //    */    
    //    private TopDocs search(String queryStr) throws Exception {            
    //        if(searcher == null) {     
    //            indexFile = new File(searchDir);     
    //            searcher = new IndexSearcher(FSDirectory.open(indexFile));       
    //        }     
    //        searcher.setSimilarity(new IKSimilarity());     
    //        QueryParser parser = new QueryParser(Version.LUCENE_30,"",new IKAnalyzer());     
    //        Query query = parser.parse(queryStr);  
    //          
    //        TopDocs topDocs = searcher.search(query, searcher.maxDoc());     
    //        return topDocs;     
    //    }  
    //    
    //    /**   
    //     * @param queryStr   
    //     * @return   
    //     * @throws Exception   
    //     */    
    //     private TopDocs searchTopN(String queryStr,int topN) throws Exception {            
    //         if(searcher == null) {     
    //             indexFile = new File(searchDir);     
    //             searcher = new IndexSearcher(FSDirectory.open(indexFile));       
    //         }     
    //         searcher.setSimilarity(new IKSimilarity());     
    //         QueryParser parser = new QueryParser(Version.LUCENE_30,"item_title",new IKAnalyzer());     
    //         Query query = parser.parse(queryStr);  
    //           
    //         TopDocs topDocs = searcher.search(query, topN);     
    //         return topDocs;     
    //     }  
    //    
    //    /**   
    //    * @param scoreDocs   
    //    * @return   
    //    * @throws Exception   
    //    */    
    //    private List<UserSearchBean> addHits2List(ScoreDoc[] scoreDocs ) throws Exception {     
    //        List<UserSearchBean> listBean = new ArrayList<UserSearchBean>();     
    //        UserSearchBean bean = null;     
    //        for(int i=0 ; i<scoreDocs.length; i++) {     
    //            int docId = scoreDocs[i].doc;     
    //            Document doc = searcher.doc(docId);     
    //            bean = new UserSearchBean();     
    //            bean.setUser_id(doc.get("user_id"));     
    //            bean.setSchool(doc.get("school"));     
    //            listBean.add(bean);     
    //        }     
    //        return listBean;     
    //    }  
    //    
    //    
    //    /**   
    //    * @param scoreDocs   
    //    * @return   
    //    * @throws Exception   
    //    */    
    //    private List<ItemDO> addItemHits2List(ScoreDoc[] scoreDocs ) throws Exception {     
    //        List<ItemDO> listBean = new ArrayList<ItemDO>();     
    //        ItemDO bean = null;     
    //        for(int i=0 ; i<scoreDocs.length; i++) {     
    //            int docId = scoreDocs[i].doc;     
    //            Document doc = searcher.doc(docId);     
    //            bean = new ItemDO();     
    //            bean.setItemPicUrl(doc.get("picture_url"));
    //            bean.setTagId(Integer.parseInt(doc.get("tag_id")));
    //            bean.setItemTitle(doc.get("item_title")); 
    //            bean.setDescription(doc.get("description"));
    //            listBean.add(bean);     
    //        }     
    //        return listBean;     
    //    } 
}
